#
#        Python GUI - Events - Generic
#

from JHacks import * ##*change*

class Event(object):

    """An input event.
    
    Attributes:

        kind                             Type of event. One of 'mouse_down', 'mouse_up', 'key_down',
                                             'key_up'.

        global_position         Position of mouse in screen coordinates at the time of the event.

        position                     For mouse events, position in local coordinates of the View that
                                             was the target of this event. Undefined for other event types.

        time                             Time of event, in platform-dependent units.

        num_clicks                 Number of consecutive clicks within double-click time.

        char                             For key events, an ASCII character. Undefined for other event types.
        
        key                For non-printing keys, a value identifying the key. Undefined for other event types.

        auto               True if key-down event is an autorepeat (not supported on all platforms).

    Platform-independent modifiers (boolean):

        shift              The Shift key.
        control            The Control key.
        option             The additional modifier key.
        extend_contig      The contiguous selection extension modifier key.
        extend_noncontig   The noncontiguous selection extension modifier key.
    """
    
    def position_in(self, view):
        """Return the position of this event in the coordinate system
        of the specified view."""
        return view.global_to_local(self.global_position)    

    def __str__(self):
        return "<GUI.Event: %s global:%s local:%s time:%s clicks:%s char:%r" \
            " key:%s shift:%s control:%s option:%s extend_contig: %s" \
            " extend_noncontig:%s auto:%s%s>" \
            % (self.kind, self.global_position, self.position, self.time,
                self.num_clicks, self.char, self.key, self.shift, self.control,
                self.option, self.extend_contig, self.extend_noncontig, self.auto,
                self._platform_modifiers_str())
